import Mock from 'mockjs'

/**
 * Classroom 模拟数据
 */
class ClassroomMock {
    room(option) {
        let param = this.parseOption(option);
        let data = [
            {
                name: '普通教室',
                id: 1,
            },
            {
                name: '智慧教室',
                id: 2,
            },
            {
                name: '会议教室',
                id: 3,
            },

        ]
        return this.stdMessage(param._success, '成功', data, 200);


    }
    // 显示资源配置
    datagrid(option) {
        let param = this.parseOption(option);
        let data = [
            {
                label: '教室管理',
                id: 0,
                children: [
                    {
                        id: 1,
                        label: '8号教学楼',
                        children: [
                            { id: 11, label: '一楼', },
                            { id: 12, label: '二楼', },
                            { id: 13, label: '三楼', },
                        ],
                    },
                    {
                        id: 2,
                        label: '学前教育实训楼',
                        children: [
                            { id: 21, label: '一楼', },
                            { id: 22, label: '二楼', },
                            { id: 23, label: '三楼', },
                        ],
                    },
                    {
                        id: 3,
                        label: '综合楼',
                        children: [
                            { id: 31, label: '一楼', },
                            { id: 32, label: '二楼', },
                            { id: 33, label: '三楼', },
                        ],
                    },
                    {
                        id: 4,
                        label: '实验楼',
                        children: [
                            { id: 41, label: '一楼', },
                            { id: 42, label: '二楼', },
                            { id: 43, label: '三楼', },
                        ],
                    },
                ],
            },

        ]
        return this.stdMessage(param._success, '成功', data, 200);
    }
    // 显示资源配置
    list(option) {
        let param = this.parseOption(option);
        let data = [
            {
                name: 'YG09-102',
                id: 1,
            },
            {
                name: 'YG09-103',
                id: 2,
            },
            {
                name: 'YG09-104',
                id: 3,
            },

        ]
        return this.stdMessage(param._success, '成功', data, 200);
    }
    // 显示资源列表
    index(option) {
        let param = this.parseOption(option);
        console.log('[教室模拟数据] 显示资源列表 param=', param, '&option=', option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                total: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'data|1-10': [{
                    'id': '@increment', // ID
                    'name': '@integer(100,200)-教室', // 用户名
                    'state': '@integer(1,99)', // 使用状态
                    'onCamera': '@integer(0,1)', // 投影机
                    'onMachine': '@integer(0,1)', // 一体机
                    'onPower': '@integer(0,1)', // 功放
                    'onVolume': '@integer(1,100)', // 音量
                    'onComputer': '@integer(0,1)', // 台式机
                    'onDisplay': '@integer(0,1)', // 显示
                    'onRecording': '@integer(0,1)', // 录播
                    'onIoT': '@integer(0,1)', // 物联管理
                    'login_time': '@datetime("yyyy-MM-dd HH:mm:ss")', // 登录时间
                }],
            },
        })
    }
    // 显示资源列表
    fault(option) {
        let param = this.parseOption(option);
        console.log('[物联控制数据] 显示资源列表 param=', param, '&option=', option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                total: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'data|1-10': [{
                    'id': '@increment', // ID
                    'name': '@integer(100,200)-教室', // 教室名称
                    'state': '@integer(1,99)', // 使用状态
                    'aircondition': '@integer(0,1)', // 空调
                    'devices': '@integer(0,1)', // 多媒体控制
                    'light1': '@integer(0,1)', // 灯光1
                    'light2': '1', // 灯光2
                    'curtain1': '@integer(0,1)', // 窗帘1
                    'curtain2': '@integer(0,1)', // 窗帘2
                    'temperature': '@integer(0,40)', // 温度℃
                    'humidity': '@integer(0,100)', // 湿度%
                    'pm25': '@integer(0,100)', // PM2.5
                    'co2': '@integer(0,5)', // CO2
                    'energy': '@integer(0,1999)', // 当天能耗
                    'time': '@datetime("yyyy-MM-dd HH:mm:ss")', // 登录时间
                }],
            },
        })

    }
    busy(option) {
        let param = this.parseOption(option);
        console.log('[教室模拟数据] 显示资源列表 param=', param, '&option=', option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            data: {
                total: '@integer(0,10)',
                current_page: 1,
                last_age: '@integer(1,5)',
                'data|1-10': [{
                    'id': '@increment', // ID
                    'name': '@integer(100,200)-教室', // 教室名称
                    'online': '@integer(0,1)', // 在线离线
                    'repairStatus': '@integer(0,1)', // 1 已报修
                    'equipments': [1,2,3,4,5,6,7,8,9,10], // 1 已报修
                    'login_time': '@datetime("yyyy-MM-dd HH:mm:ss")', // 登录时间
                }],
            },
        })
    }

    // 显示指定的资源
    read(option) {
        let param = this.parseOption(option);
        console.log('[会员模拟数据] 显示指定的资源 param=', param, '&option=', option);
        if (!param.id || param.id.trim().length == 0) {
            return this.stdMessage(false, '参数无效');
        }
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            'data': {
                'id': '@id', // 随机编号
                'id2': '@increment', // 自增长编号
                'guid': '@guid', // 全球唯一编码
                'serialid|1-5': /\d{5,10}\-/,
                'user_name': '@string("lower", 5)', // 5位小写字符
                'password': '@string(8,16)', // 8-16位字符串
                'salt': '@string(6)', // 6位字符串
                'realname': '@cname', // 中文姓名
                'email': '@email',
                'mobile': /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
                'blance': '@float(0,100,1,5)',
                'score': '@integer(100,1000)',
                'address': '',
                'region': '@region', // 区域（华北、华南）
                'province': '@province', // 省份
                'ciry': '@city(true)', // 城市
                'country': '@county(true)', // 区镇
                'street': '@ctitle(6,10)',
                'zip': '@zip', // 邮编
                'gender': '@integer(0,2)',
                'age': '@integer(18,100)',
                'login_ip': '@ip',
                'login_count': '@integer(0,100)',
                'favorite': '@range(1,10)',
                'remark': '@ctitle(0,50)', // 0-50位中文
                'homepage': '@url', // 网址
                'signature': '@cparagraph(0,100)', // 个性签名
                'avatar': '@image("200x100", "#894FC4", "#FFF", "png", "描述!")',
                'created_time': '@datetime("yyyy-MM-dd HH:mm:ss")',
                'date_ymd': '@date("yyyy-MM-dd")',
            }
        })
    }

    // 保存新建的资源
    save(option) {
        let param = this.parseOption(option);
        console.log('[会员模拟数据] 保存新建的资源 param=', param, '&option=', option);
        if (!param.user_name || param.user_name.trim().length == 0) {
            return this.stdMessage(false, '用户名是必填项');
        }
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            'data': {
                'id': '@id', // 随机编号
            }
        })
    }

    // 保存更新的资源
    update(option) {
        let param = this.parseOption(option);
        console.log('[会员模拟数据] 保存更新的资源 param=', param, '&option=', option);
        if (!param.id || isNaN(param.id)) {
            return this.stdMessage(false, '参数无效');
        }
        if (!param.user_name || param.user_name.trim().length == 0) {
            return this.stdMessage(false, '用户名无效');
        }
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            'data': {
                'id': param.id, // 随机编号
            }
        })

    }

    // 删除指定资源
    delete(option) {
        let param = this.parseOption(option);
        console.log('[会员模拟数据] 删除指定资源 param=', param, '&option=', option);
        if (!param.id || param.id.trim().length == 0) {
            return this.stdMessage(false, '参数无效');
        }
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            'data': {
                'id': param.id, // 随机编号
            }
        })
    }

    // 解析参数 option= {url:'/api/read?id=1', type:'GET', data:null}
    parseOption(option) {
        let param = {}
        if (option.url.indexOf('?') > -1) {
            new URLSearchParams(option.url.substring(option.url.indexOf('?') + 1)).forEach((v, k) => {
                param[k] = v;
            })
        }
        if (option.body) {
            if (option.body instanceof FormData) {
                option.body.forEach((v, k) => {
                    param[k] = v;
                })
            } else {
                param = JSON.parse(option.body);
            }
        }
        // 可以通过传参 _success 来控制返回消息的成功状态。默认返回成功消息。
        if (typeof (param._success) != 'boolean') {
            param._success = true;
        }
        return param;
    }

    // 返回标准消息对象
    stdMessage(success, message, data = '', code = 0) {
        return {
            success: success,
            message: message,
            data: data,
            code: code,
        }
    }
}

export default new ClassroomMock;